1. Technical Field
The present invention relates to data processing systems and, in particular, to dynamically controlling transmission of data over a network within a data processing system. Still more particularly, the present invention relates to a method and system in a data processing system for permitting a receiver to dynamically alter a transmission priority level associated with multiple real-time data packets during transmission of real-time and non-real-time packets over a network in order to provide end-to-end flow control between a sender and a receiver attached to the network.
2. Description of the Related Art
Multimedia computer systems are commonly utilized within data processing systems and are capable of presenting material utilizing a combination of text, graphics, video, animation, and sound. Proper scheduling of the system's resources is important in order to maintain an efficient, high-quality multimedia presentation.
One such resource is the data transmission capacity of a network, which is shared among the devices connected to the network. A network is a data communication system that is used to interconnect two or more computers. A multimedia application may access data during operation which requires utilization of the network. It is recognized that certain data in a system, such as that associated with a multimedia presentation, may require timely handling during transmission. Therefore, a "quality of service" has been defined in the literature, which seeks to describe various parameters which may be specified to define certain minimum requirements which must be met for transmission of given data types over the network. These quality of service parameters may, then, be utilized by a resource manager in order to properly allocate system resources.
Real-time data is data that must arrive by a specified time or deadline. Failure of the real-time data to arrive by the deadline will cause an error at the destination. One example of real-time data is video data which is to be displayed on a display screen. It is important that the frames which are included within the video data be received every 1/30th of a second. Another example is packetized audio. If the audio data is delayed, a pop will be heard at the receiver. The quality of service of real-time may be measured by the percentage of frames that meet their deadlines.
Non-real-time data is data which has no deadline. One example of non-real-time data is a file transfer. The quality of service of non-real-time may be measured by the average time to deliver a file.
If a system is to include support for multimedia applications across the network, then the network must support the transmission of both real-time and non-real-time data simultaneously. The transmission of both real-time and non-real-time data simultaneously on the network includes a number of design trade-offs which, if not managed properly, can have undesirable consequences on the overall performance of the system.
Multiple data streams might be flowing through the network simultaneously. Because the network is composed of a finite set of resources, a scheme must be established to determine which data stream will be granted control of a particular resource when two or more data streams simultaneously require the same resource.
A data stream is divided into smaller units called data packets. A data packet is a unit of data transmission which is transmitted through the network. A data packet includes the specified number of bytes of data that is to be transmitted, along with data that is used by the network to control the flow through the network. Each data stream has an associated quality of service. Quality of service is the performance that a data stream receives as it travels through the network. Quality of service is measured by such parameters as throughput, delay, and jitter (the degree of variation within the inter-arrival times of the data packets).
There may be two types of data streams flowing through the network, real-time and non-real-time. A real-time data stream assumes that data packets will be delivered at a specified time and/or at a specified rate. An example of real-time data is full motion video. A video stream is composed of frames, each frame being a single still image. The still images are presented to a viewer at the rate of a new image every 1/30th of a second. Frames stored in a first computer in the network may be viewed as full motion on a second computer in the network. It is not possible to send all of the images from the first computer to the second computer simultaneously. Therefore, a scheme must be utilized to send the frames as a data stream through the network whereby the viewer can view them in the correct order and see a new frame every 1/30th of a second.
Frames are typically transmitted across a network as a group of data packets. When the data packets arrive at the receiving computer, they are reassembled into frames and placed into a frame buffer until they are needed by the viewer. A frame buffer is a finite set of storage locations where received frames can be held until the time they are needed. A frame buffer can be implemented as part of the RAM, or as a set of storage locations in the main memory of the receiving computer.
An example of one attempt to support simultaneous transmission of both real-time and non-real-time data is to designate all real-time data transmission on the network as a higher priority above all non-real-time data transmissions. When this approach is taken, real-time data streams are transmitted through the network in a more timely manner because they are allocated the network resources ahead of any non-real-time data streams which may also require the same resource. However, this approach may greatly degrade the performance of non-real-time data which still desires a low latency and maximum throughput even though there is no deadline. Further, all real-time data are treated as equally urgent using this approach even though some may be far away from their deadline and others may be very close to it. In addition, a real-time data stream can not dynamically adjust its quality of service. If it is experiencing a poor quality of service, there is no way to request better service. If quality of service is proportional to communication costs, there is no way of reducing the communication costs associated with real-time data transmissions.
Another approach is for the network switches or routers to schedule real-time transmission over the network in order of the deadline of the data stream. This approach requires that the real-time data include deadline information. Many defined protocols, such as Asynchronous Transfer Mode (ATM), do not provide for deadline information to be included with the data in such a manner. When network communication speeds become higher but the hardware speeds do not increase proportionally, the processing that can be done at the network switches and routers becomes more limited. This approach places an excessive processing requirement on the network switches. Non-real-time data transmissions also may suffer an excessive delay.
Therefore a need exists for a method and system in a data processing system to dynamically control transmission of non-real-time and real-time data over a network, where the data does not include deadline information.